package com.tinet.sistReserva.ejb;

import java.util.ArrayList;

import javax.ejb.Remote;

import com.tinet.sistReserva.model.Sala;
import com.tinet.sistReserva.model.util.SalaException;

/**
 * 
 * Interfaz que define los metodos a implementar por la clase SalaBean.
 * 
 * @author Frmancil
 */
@Remote
public interface InterfazSalaBean {
    /**
     * 
     * Metodo que recibe una sala creada desde la capa web y la envia la capa
     * DAO para insertarlo en la base de datos.
     * 
     * @param nuevaSala
     *            Sala a ingresar.
     * @throws SalaException
     *             Lanza Excepcion si sala se encuentra y se quiere volver a
     *             ingresar.
     */
    void agregarSala(Sala nuevaSala) throws SalaException;

    /**
     * 
     * Metodo que recibe una sala para ser eliminada de la base de datos.
     * 
     * @param salaAEliminar
     *            Sala a eliminar.
     * @throws SalaException
     *             Lanza Excepcion si no encuentra la sala a eliminar.
     */
    void eliminarSala(Sala salaAEliminar) throws SalaException;

    /**
     * 
     * Metodo que recibe una sala, la manda a buscar dentro de base de datos y
     * si la encuentra actualiza sus atributos.
     * 
     * @param salaAActualizar
     *            Sala a actualizar.
     * @throws SalaException
     *             Lanza error si no encuentra la sala a actualizar.
     */
    void actualizarSala(Sala salaAActualizar) throws SalaException;

    /**
     * 
     * Metodo que retorna una lista de las salas que se encuentran en la base
     * de datos.
     * 
     * @return Retorna una lista de salas.
     */
    ArrayList<Sala> listarSalas();

    /**
     * 
     * Metodo que busca sala agregada.
     * 
     * @param salaABuscar
     *            Sala a buscar en base de datos.
     * @return Retorna Sala encontrada.
     * @throws SalaException
     *             Lanza Excepcion si sala buscada no es encontrada en la base
     *             de datos.
     */
    Sala buscarSalaAgregada(Sala salaABuscar) throws SalaException;

    /**
     * 
     * Metodo que busca sala.
     * 
     * @param salaABuscar
     *            Sala a buscar en base de datos.
     * @return Retorna Sala encontrada.
     * @throws SalaException
     *             Lanza Excepcion si sala buscada no es encontrada en la base
     *             de datos.
     */
    Sala buscarSala(Sala salaABuscar) throws SalaException;
}
